package com.cskaoyan.loop;

/*
        练习:
        请在控制台输出数据1-10
        请在控制台输出数据10-1
        求出1-10之间数据之和
        求出1-100之间偶数和
        求5的阶乘
        在控制台输出所有的”水仙花数”
          	所谓的水仙花数是指一个三位数，其各位数字的立方和等于该数本身。
            举例：153就是一个水仙花数。
            153 = 1*1*1 + 5*5*5 + 3*3*3

        统计”水仙花数”共有多少个

 */
public class Demo3ForExercise {
    public static void main(String[] args) {
        // 请在控制台输出数据1-10
        // 控制重复输出10次
//        for (int i = 1; i <= 10; i++) {
//            System.out.println(i);
//        }

        // 请在控制台输出数据10-1
//        for (int i = 10; i > 0; i--) {
//            System.out.println(i);
//        }

        //求出1-10之间数据之和
        //    ((((1 + 2) + 3) + 4) + 5 + 6 + 7 + 8 + 9) + 10
        // 累和初值0  1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
        // 累和变量，存的是待加的数值前面的值，求和的结果
//        int sum = 0;
//        for (int i = 1; i <= 10; i++) {
//            sum = sum + i;
//        }
//        System.out.println(sum);


        // 求出1-100之间偶数和
//        int sum = 0;
//        for (int i = 1; i <= 100; i++) {
//            if (i % 2 == 0) {
//                // i 是偶数
//                sum = sum + i;
//            }
//        }
//        System.out.println(sum);


        // 求5的阶乘
        //             5 * 4 * 3 * 2 * 1
        //累积变量 1    5* 4 * 3 * 2 * 1
        // 累积变量，存的是当前待乘数字前的值，相乘的结果
//        int result = 1;
//        for (int i = 5; i >= 1; i--) {
//            result = result * i;
//        }
//        System.out.println(result);

        // 在控制台输出所有的”水仙花数”
//        for (int i = 100; i <= 999; i++) {
//            // 针对每一个三位数i,判断是否是水仙花数
//
//            // 1. 取出三位数每一位的值
//            // 个位  153 % 10
//            int m = i % 10;
//
//            // 十位 (153 / 10) % 10  = 15 % 10
//            int n = (i / 10) % 10;
//
//            // 百位
//            // 153 / 100
//            int t = i / 100;
//
//            if (i == m * m * m + n * n * n + t * t * t) {
//                System.out.println(i);
//            }
//        }

        // 统计”水仙花数”共有多少个
        // 统计变量
        int count = 0;
        for (int i = 100; i <= 999; i++) {

            // 153 % 10 个位
            int m =  i % 10;
            // (153 / 10) % 10 十位
            int n = (i / 10) % 10;

            // 153 / 100
            int t = i / 100;
            if (i == m * m * m + n * n * n + t * t * t) {
                System.out.println(i);
                // 计数变量 + 1
                count++;
            }
        }
        System.out.println(count);

    }
}
